<!DOCTYPE HTML>

<html lang="en">
<head>

<title>AbstractOAuth2TokenAuthenticationToken (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="AbstractOAuth2TokenAuthenticationToken (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="AbstractOAuth2TokenAuthenticationToken.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.oauth2.server.resource.authentication</a></div>
<h2 title="Class AbstractOAuth2TokenAuthenticationToken" class="title">Class AbstractOAuth2TokenAuthenticationToken&lt;T extends <a href="../../../core/AbstractOAuth2Token.html" title="class in org.springframework.security.oauth2.core">AbstractOAuth2Token</a>&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../authentication/AbstractAuthenticationToken.html" title="class in org.springframework.security.authentication">org.springframework.security.authentication.AbstractAuthenticationToken</a></li>
<li>
<ul class="inheritance">
<li>org.springframework.security.oauth2.server.resource.authentication.AbstractOAuth2TokenAuthenticationToken&lt;T&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Serializable</code>, <code>java.security.Principal</code>, <code><a href="../../../../core/Authentication.html" title="interface in org.springframework.security.core">Authentication</a></code>, <code><a href="../../../../core/CredentialsContainer.html" title="interface in org.springframework.security.core">CredentialsContainer</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="BearerTokenAuthentication.html" title="class in org.springframework.security.oauth2.server.resource.authentication">BearerTokenAuthentication</a></code>, <code><a href="JwtAuthenticationToken.html" title="class in org.springframework.security.oauth2.server.resource.authentication">JwtAuthenticationToken</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">AbstractOAuth2TokenAuthenticationToken&lt;T extends <a href="../../../core/AbstractOAuth2Token.html" title="class in org.springframework.security.oauth2.core">AbstractOAuth2Token</a>&gt;</span>
extends <a href="../../../../authentication/AbstractAuthenticationToken.html" title="class in org.springframework.security.authentication">AbstractAuthenticationToken</a></pre>
<div class="block">Base class for <a href="../../../../authentication/AbstractAuthenticationToken.html" title="class in org.springframework.security.authentication"><code>AbstractAuthenticationToken</code></a> implementations that expose common
attributes between different OAuth 2.0 Access Token Formats.
<p>
For example, a <a href="../../../jwt/Jwt.html" title="class in org.springframework.security.oauth2.jwt"><code>Jwt</code></a> could expose its <a href="../../../jwt/Jwt.html#getClaims()"><code>claims</code></a> via
<a href="AbstractOAuth2TokenAuthenticationToken.html#getTokenAttributes()"><code>getTokenAttributes()</code></a> or an &quot;Introspected&quot; OAuth 2.0 Access Token
could expose the attributes of the Introspection Response via
<a href="AbstractOAuth2TokenAuthenticationToken.html#getTokenAttributes()"><code>getTokenAttributes()</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>5.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../core/OAuth2AccessToken.html" title="class in org.springframework.security.oauth2.core"><code>OAuth2AccessToken</code></a>,
<a href="../../../jwt/Jwt.html" title="class in org.springframework.security.oauth2.jwt"><code>Jwt</code></a>,
<a target="_blank" href="https://tools.ietf.org/search/rfc7662#section-2.2">2.2
Introspection Response</a>,
<a href="../../../../../../../serialized-form.html#org.springframework.security.oauth2.server.resource.authentication.AbstractOAuth2TokenAuthenticationToken">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#%3Cinit%3E(T)">AbstractOAuth2TokenAuthenticationToken</a></span>&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token)</code></th>
<td class="colLast">
<div class="block">Sub-class constructor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#%3Cinit%3E(T,java.lang.Object,java.lang.Object,java.util.Collection)">AbstractOAuth2TokenAuthenticationToken</a></span>&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token,
java.lang.Object&nbsp;principal,
java.lang.Object&nbsp;credentials,
java.util.Collection&lt;? extends <a href="../../../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#%3Cinit%3E(T,java.util.Collection)">AbstractOAuth2TokenAuthenticationToken</a></span>&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token,
java.util.Collection&lt;? extends <a href="../../../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</code></th>
<td class="colLast">
<div class="block">Sub-class constructor.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#getCredentials()">getCredentials</a></span>()</code></th>
<td class="colLast">
<div class="block">The credentials that prove the principal is correct.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#getPrincipal()">getPrincipal</a></span>()</code></th>
<td class="colLast">
<div class="block">The identity of the principal being authenticated.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#getToken()">getToken</a></span>()</code></th>
<td class="colLast">
<div class="block">Get the token bound to this <a href="../../../../core/Authentication.html" title="interface in org.springframework.security.core"><code>Authentication</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract java.util.Map&lt;java.lang.String,&#8203;java.lang.Object&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractOAuth2TokenAuthenticationToken.html#getTokenAttributes()">getTokenAttributes</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the attributes of the access token.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.springframework.security.authentication.AbstractAuthenticationToken">

</a>
<h3>Methods inherited from class&nbsp;org.springframework.security.authentication.<a href="../../../../authentication/AbstractAuthenticationToken.html" title="class in org.springframework.security.authentication">AbstractAuthenticationToken</a></h3>
<code><a href="../../../../authentication/AbstractAuthenticationToken.html#equals(java.lang.Object)">equals</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#eraseCredentials()">eraseCredentials</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#getAuthorities()">getAuthorities</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#getDetails()">getDetails</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#getName()">getName</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#hashCode()">hashCode</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#isAuthenticated()">isAuthenticated</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#setAuthenticated(boolean)">setAuthenticated</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#setDetails(java.lang.Object)">setDetails</a>, <a href="../../../../authentication/AbstractAuthenticationToken.html#toString()">toString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.security.Principal">

</a>
<h3>Methods inherited from interface&nbsp;java.security.Principal</h3>
<code>implies</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.springframework.security.oauth2.core.AbstractOAuth2Token)">

</a><a id="&lt;init&gt;(T)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>AbstractOAuth2TokenAuthenticationToken</h4>
<pre>protected&nbsp;AbstractOAuth2TokenAuthenticationToken&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token)</pre>
<div class="block">Sub-class constructor.</div>
</li>
</ul>
<a id="&lt;init&gt;(org.springframework.security.oauth2.core.AbstractOAuth2Token,java.util.Collection)">

</a><a id="&lt;init&gt;(T,java.util.Collection)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>AbstractOAuth2TokenAuthenticationToken</h4>
<pre>protected&nbsp;AbstractOAuth2TokenAuthenticationToken&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token,
                                                 java.util.Collection&lt;? extends <a href="../../../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</pre>
<div class="block">Sub-class constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>authorities</code> - the authorities assigned to the Access Token</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(org.springframework.security.oauth2.core.AbstractOAuth2Token,java.lang.Object,java.lang.Object,java.util.Collection)">

</a><a id="&lt;init&gt;(T,java.lang.Object,java.lang.Object,java.util.Collection)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractOAuth2TokenAuthenticationToken</h4>
<pre>protected&nbsp;AbstractOAuth2TokenAuthenticationToken&#8203;(<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;token,
                                                 java.lang.Object&nbsp;principal,
                                                 java.lang.Object&nbsp;credentials,
                                                 java.util.Collection&lt;? extends <a href="../../../../core/GrantedAuthority.html" title="interface in org.springframework.security.core">GrantedAuthority</a>&gt;&nbsp;authorities)</pre>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="getPrincipal()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getPrincipal</h4>
<pre class="methodSignature">public&nbsp;java.lang.Object&nbsp;getPrincipal()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../core/Authentication.html#getPrincipal()">Authentication</a></code></span></div>
<div class="block">The identity of the principal being authenticated. In the case of an authentication
request with username and password, this would be the username. Callers are
expected to populate the principal for an authentication request.
<p>
The <tt>AuthenticationManager</tt> implementation will often return an
<tt>Authentication</tt> containing richer information as the principal for use by
the application. Many of the authentication providers will create a
<code>UserDetails</code> object as the principal.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>Principal</code> being authenticated or the authenticated
principal after authentication.</dd>
</dl>
</li>
</ul>
<a id="getCredentials()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getCredentials</h4>
<pre class="methodSignature">public&nbsp;java.lang.Object&nbsp;getCredentials()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../core/Authentication.html#getCredentials()">Authentication</a></code></span></div>
<div class="block">The credentials that prove the principal is correct. This is usually a password,
but could be anything relevant to the <code>AuthenticationManager</code>. Callers
are expected to populate the credentials.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the credentials that prove the identity of the <code>Principal</code></dd>
</dl>
</li>
</ul>
<a id="getToken()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getToken</h4>
<pre class="methodSignature">public final&nbsp;<a href="AbstractOAuth2TokenAuthenticationToken.html" title="type parameter in AbstractOAuth2TokenAuthenticationToken">T</a>&nbsp;getToken()</pre>
<div class="block">Get the token bound to this <a href="../../../../core/Authentication.html" title="interface in org.springframework.security.core"><code>Authentication</code></a>.</div>
</li>
</ul>
<a id="getTokenAttributes()">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getTokenAttributes</h4>
<pre class="methodSignature">public abstract&nbsp;java.util.Map&lt;java.lang.String,&#8203;java.lang.Object&gt;&nbsp;getTokenAttributes()</pre>
<div class="block">Returns the attributes of the access token.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Map</code> of the attributes in the access token.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="AbstractOAuth2TokenAuthenticationToken.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="AbstractOAuth2TokenAuthenticationToken.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040cc830a5b980c","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
